Debugging is a process of finding and removing bugs or defects in a computer program in order to make the program behave as expected. Debugging involves numerous aspects, including, but not limited to, interactive debugging, control flow, integration testing, log files, monitoring (application or system), memory dumps, profiling, statistical process control, and special design tactics to improve detection while simplifying changes. Debugging is often performed by means of software tools called “debuggers.” A debugger may be provided by an integrated development environment (IDE).
The debuggers enable the programmer to debug the program in a variety of ways. For example, the programmer may use the debugger to start, monitor or end the execution of the program, set breakpoints, change values in memory, and so on. Conventionally the debugger allows the programmer to use a step or single-step mode to go through code lines one by one to check values of monitored objects. The monitored objects include, for example, variables of interest in the program or user defined expressions in the debugger. Another commonly-used functionality provided by the debugger is breakpoint. During execution of a code segment, the debugger can stop execution of the program at any code line where a breakpoint is set. Then the programmer may, for example, check the execution results for analysis purposes.